home *** CD-ROM | disk | FTP | other *** search
/ The Original Shareware 1.1 / The Original Shareware (WeMake CDs)(Volume 1.1)(CDs, Inc)(1993).iso / 36 / vfos_dv.zip / DVAPI.INC < prev    next >
Text File  |  1988-02-15  |  6KB  |  349 lines

  1.  
  2. ;  DESQview API interfaces
  3.  
  4. ;***************************************************************
  5. ;
  6. ;  Function numbers (AX values) for the @CALL interface
  7. ;
  8. ;***************************************************************
  9.  
  10. PAUSE        EQU    1000H
  11. PRINTC        EQU    1003H
  12. GETBIT        EQU    1013H
  13. FREEBIT        EQU    1014H
  14. SETBIT        EQU    1015H
  15. ISOBJ        EQU    1016H
  16. LOCATE        EQU    1018H
  17. SOUND        EQU    1019H
  18. OSTACK        EQU    101AH
  19. BEGINC        EQU    101BH
  20. ENDC        EQU    101CH
  21. STOP        EQU    101DH
  22. START        EQU    101EH
  23. DISPEROR    EQU    101FH
  24. PGMINT        EQU    1021H
  25. POSWIN        EQU    1023H
  26. GETBUF        EQU    1024H
  27. USTACK        EQU    1025H
  28. POSTTASK    EQU    102BH
  29. NEWPROC        EQU    102CH
  30. KMOUSE        EQU    102DH
  31.  
  32. APPNUM        EQU    1107H
  33. DBGPOKE        EQU    110AH
  34. APILEVEL    EQU    110BH
  35. GETMEM        EQU    110CH
  36. PUTMEM        EQU    110DH
  37. FINDMAIL    EQU    110EH
  38. PUSHKEY        EQU    1110H
  39. JUSTIFY        EQU    1111H
  40. CSTYLE        EQU    1112H
  41.  
  42. DVPRESENT    EQU    0FFFFH
  43. SHADOW        EQU    0FFFEH
  44. UPDATE        EQU    0FFFDH
  45.  
  46. ;***************************************************************
  47. ;
  48. ;  Message numbers (BH values) for the @SEND interface
  49. ;
  50. ;***************************************************************
  51.  
  52. HANDLE        EQU    00H
  53. NEW        EQU    01H
  54. FREE        EQU    02H
  55. ADDR        EQU    03H
  56. DIR        EQU    03H
  57. READ        EQU    04H
  58. APPLY        EQU    04H
  59. WRITE        EQU    05H
  60. SIZEOF        EQU    08H
  61. LEN        EQU    09H
  62. ADDTO        EQU    0AH
  63. SUBFROM        EQU    0BH
  64. OPEN        EQU    0CH
  65. CLOSE        EQU    0DH
  66. ERASE        EQU    0EH
  67. STATUS        EQU    0FH
  68. EOF        EQU    10H
  69. AT        EQU    11H
  70. SETSCALE    EQU    11H
  71. SETNAME        EQU    11H
  72. READN        EQU    12H
  73. GETSCALE    EQU    12H
  74. REDRAW        EQU    13H
  75. SETESC        EQU    14H
  76. LOCK        EQU    14H
  77.  
  78. ;***************************************************************
  79. ;
  80. ;  Modifier numbers (BL values) for the @SEND interface
  81. ;
  82. ;***************************************************************
  83.  
  84. TOS        EQU    00H
  85. ME        EQU    01H
  86. MAILTOS        EQU    02H
  87. MAILME        EQU    03H
  88. KEYTOS        EQU    04H
  89. KEYME        EQU    05H
  90. OBJQTOS        EQU    06H
  91. OBJQME        EQU    07H
  92. WINDOW        EQU    08H
  93. MAILBOX        EQU    09H
  94. KEYBOARD    EQU    0AH
  95. TIMER        EQU    0BH
  96. POINTER        EQU    0FH
  97. PANEL        EQU    10H
  98.  
  99.  
  100. ;***************************************************************
  101. ;
  102. ;  32-bit register equates
  103. ;
  104. ;***************************************************************
  105.  
  106. ESDI        EQU    07FFFH
  107. DSSI        EQU    07FFEH
  108. BXAX        EQU    07FFDH
  109. DXCX        EQU    07FFCH
  110. ESSI        EQU    07FFBH
  111. DSDI        EQU    07FFAH
  112.  
  113.  
  114. ;***************************************************************
  115. ;
  116. ;  @SEND interface macro - bombs AH and BX
  117. ;
  118. ;***************************************************************
  119.  
  120. @SEND        macro    message,object
  121.         if (type object) ne abs
  122.           @PUSH    &object
  123.           MOV    BX,&message*256+TOS
  124.         else
  125.         if object ge DSDI
  126.           @PUSH    &object
  127.           MOV    BX,&message*256+TOS
  128.         else
  129.           MOV    BX,&message*256+&object
  130.         endif
  131.         endif
  132.         MOV    AH,12H
  133.         INT    15H
  134.         endm
  135.  
  136.  
  137. ;***************************************************************
  138. ;
  139. ;  @CALL interface macro - bombs AX
  140. ;
  141. ;***************************************************************
  142.  
  143. @CALL        macro    func
  144.             local    L1
  145.         if (func eq APILEVEL)
  146.           CMP    BX,200H        ; is 2.00 sufficient ?
  147.           JB    L1        ; jump if so
  148.           MOV    AX,APILEVEL    ; issue the call
  149.           INT    15H
  150.           CMP    AX,2        ; early version 2.00 ?
  151.           JNE    L1        ; jump if not
  152.           XCHG    BH,BL        ; reverse bytes
  153.           MOV    AX,APILEVEL    ; reissue call
  154.           INT    15H
  155.           XCHG    BH,BL        ; correct byte order
  156. L1:
  157.         else
  158.         if (func eq DVPRESENT)
  159.           PUSH    BX        ; save registers
  160.           PUSH    CX
  161.           PUSH    DX
  162.           MOV    AX,2B01H    ; DOS Set Date function
  163.           XOR    BX,BX        ; in case outside DESQview
  164.           MOV    CX,'DE'        ; invalid date value
  165.           MOV    DX,'SQ'
  166.           INT    21H
  167.           MOV    AX,BX        ; version # to AX
  168.           CMP    AX,2        ; early DV 2.00 ?
  169.           JNE    L1        ; jump if not
  170.           XCHG    AH,AL        ; swap bytes if so
  171. L1:          POP    DX        ; restore registers
  172.           POP    CX
  173.           POP    BX
  174.         else
  175.         if (func eq SHADOW)
  176.           MOV    AH,0FEH
  177.           INT    10H
  178.         else 
  179.         if (func eq UPDATE)
  180.           MOV    AH,0FFH
  181.           INT    10H
  182.         else 
  183.           MOV    AX,&func
  184.           INT    15H
  185.         endif
  186.         endif
  187.         endif
  188.         endif
  189.         endm
  190.  
  191.  
  192. ;***************************************************************
  193. ;
  194. ;  @PUSH and supporting macros - pushes 32-bit values on the stack
  195. ;
  196. ;***************************************************************
  197.  
  198. @PUSH_ESDI    macro
  199.         PUSH    ES
  200.         PUSH    DI
  201.         endm
  202.  
  203. @PUSH_DSSI    macro
  204.         PUSH    DS
  205.         PUSH    SI
  206.         endm
  207.  
  208. @PUSH_BXAX    macro
  209.         PUSH    BX
  210.         PUSH    AX
  211.         endm
  212.  
  213. @PUSH_DXCX    macro
  214.         PUSH    DX
  215.         PUSH    CX
  216.         endm
  217.  
  218. @PUSH_ESSI    macro
  219.         PUSH    ES
  220.         PUSH    SI
  221.         endm
  222.  
  223. @PUSH_DSDI    macro
  224.         PUSH    DS
  225.         PUSH    DI
  226.         endm
  227.  
  228. @PUSH        macro    parm
  229.         if (type parm) ne abs
  230.           PUSH    WORD PTR &parm+2
  231.           PUSH    WORD PTR &parm
  232.         else
  233.           @PUSH_&parm
  234.         endif
  235.         endm
  236.  
  237.  
  238. ;***************************************************************
  239. ;
  240. ;  @POP and supporting macros - pops 32-bit values from the stack
  241. ;
  242. ;***************************************************************
  243.  
  244. @POP_ESDI    macro
  245.         POP    DI
  246.         POP    ES
  247.         endm
  248.  
  249. @POP_DSSI    macro
  250.         POP    SI
  251.         POP    DS
  252.         endm
  253.  
  254. @POP_BXAX    macro
  255.         POP    AX
  256.         POP    BX
  257.         endm
  258.  
  259. @POP_DXCX    macro
  260.         POP    CX
  261.         POP    DX
  262.         endm
  263.  
  264. @POP_ESSI    macro
  265.         POP    SI
  266.         POP    ES
  267.         endm
  268.  
  269. @POP_DSDI    macro
  270.         POP    DI
  271.         POP    DS
  272.         endm
  273.  
  274. @POP        macro    parm
  275.         if (type parm) ne abs
  276.           POP    WORD PTR &parm
  277.           POP    WORD PTR &parm+2
  278.         else
  279.           @POP_&parm
  280.         endif
  281.         endm
  282.  
  283.  
  284. ;***************************************************************
  285. ;
  286. ;  @MOV and supporting macros - moves 32-bit values to/from memory
  287. ;
  288. ;***************************************************************
  289.  
  290. @DV_LOAD    macro    seg,off,arg
  291.         MOV    &seg,WORD PTR &arg+2
  292.         MOV    &off,WORD PTR &arg
  293.         endm
  294.  
  295. @DV_STORE    macro    seg,off,arg
  296.         MOV    WORD PTR &arg+2,&seg
  297.         MOV    WORD PTR &arg,&off
  298.         endm
  299.  
  300. @MOV_ESDI    macro    mac,arg
  301.         &mac    ES,DI,&arg
  302.         endm
  303.  
  304. @MOV_DSSI    macro    mac,arg
  305.         &mac    DS,SI,&arg
  306.         endm
  307.  
  308. @MOV_BXAX    macro    mac,arg
  309.         &mac    BX,AX,&arg
  310.         endm
  311.  
  312. @MOV_DXCX    macro    mac,arg
  313.         &mac    DX,CX,&arg
  314.         endm
  315.  
  316. @MOV_ESSI    macro    mac,arg
  317.         &mac    ES,SI,&arg
  318.         endm
  319.  
  320. @MOV_DSDI    macro    mac,arg
  321.         &mac    DS,DI,&arg
  322.         endm
  323.  
  324. @MOV        macro    dest,src
  325.         if (type dest) eq abs
  326.           @MOV_&dest    @DV_LOAD,&src
  327.         else
  328.           @MOV_&src    @DV_STORE,&dest
  329.         endif
  330.         endm
  331.  
  332.  
  333. ;***************************************************************
  334. ;
  335. ;  @CMP macro - compares BX:AX to DWORD in memory
  336. ;
  337. ;***************************************************************
  338.  
  339. @CMP        macro    parm
  340.         local    L1
  341.         CMP    AX,WORD PTR &parm
  342.         JNE    L1
  343.         CMP    BX,WORD PTR &parm+2
  344. L1:        endm
  345.  
  346.  
  347.  
  348.  
  349.